# 文件名：models.py
# 作者：系统自动生成
# 创建日期：2025-04-26
# 描述：教师管理应用的数据模型文件，定义教师信息、课程安排等数据库表结构

from django.db import models
from django.contrib.auth.models import User

class Teacher(models.Model):
    """
    教师信息模型
    
    属性：
        user - 关联的用户账号
        name - 教师姓名
        teacher_id - 教师工号
        gender - 性别
        birth_date - 出生日期
        phone - 联系电话
        email - 电子邮箱
        address - 家庭住址
        education - 学历
        major - 专业
        position - 职位
        hire_date - 入职日期
        status - 在职状态
    """
    GENDER_CHOICES = [
        ('M', '男'),
        ('F', '女'),
    ]
    STATUS_CHOICES = [
        ('active', '在职'),
        ('retired', '已退休'),
        ('resigned', '已离职'),
    ]
    
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='teacher')
    name = models.CharField('姓名', max_length=50)
    teacher_id = models.CharField('工号', max_length=20, unique=True)
    gender = models.CharField('性别', max_length=1, choices=GENDER_CHOICES)
    birth_date = models.DateField('出生日期', null=True, blank=True)
    phone = models.CharField('联系电话', max_length=20, blank=True)
    email = models.EmailField('电子邮箱', blank=True)
    address = models.CharField('家庭住址', max_length=200, blank=True)
    education = models.CharField('学历', max_length=50, blank=True)
    major = models.CharField('专业', max_length=50, blank=True)
    position = models.CharField('职位', max_length=50, blank=True)
    hire_date = models.DateField('入职日期')
    status = models.CharField('在职状态', max_length=20, choices=STATUS_CHOICES, default='active')
    
    def __str__(self):
        return f'{self.name}({self.teacher_id})'

class CourseAssignment(models.Model):
    """
    教师课程安排模型
    
    属性：
        teacher - 关联的教师
        course - 课程名称
        class_name - 班级名称
        semester - 学期
        schedule - 上课时间
        classroom - 教室
    """
    teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, related_name='assignments')
    course = models.CharField('课程名称', max_length=50)
    class_name = models.CharField('班级名称', max_length=50)
    semester = models.CharField('学期', max_length=20)
    schedule = models.CharField('上课时间', max_length=100)
    classroom = models.CharField('教室', max_length=50)
    
    def __str__(self):
        return f'{self.teacher.name} - {self.course} - {self.class_name}'